<?php

class ListaBlanca_IndexController extends Zend_Controller_Action
{

    /**
     * 
     * @var Zend_Auth_Storage_Interface
     */
    private $_user_info;
    /**
     * 
     * @var Zwei_Admin_Acl
     */
    private $_acl;
    /**
     * 
     * @var string
     */
    private $_page;

    public function init()
    {
        $this->_helper->layout()->disableLayout();
        if (Zend_Auth::getInstance()->hasIdentity()) {
            $this->_user_info = Zend_Auth::getInstance()->getStorage()->read();
            $this->_acl = new Zwei_Admin_Acl($this->_user_info->user_name);
            $this->_page = "lista-blanca/index";
        } else {
            $this->_redirect('index/login');
        }
    }

    public function indexAction()
    {
        // action body
    }

    public function actualesAction()
    {
        if (!$this->_acl->isUserAllowed($this->_page."/actuales")) exit("<p>Acceso denegado a $this->_page/actuales</p>");
        include_once ROOT_DIR . "/classes/usuario-class.php";
        //error_reporting(E_ALL);


        echo "<script src='".BASE_URL."js/funciones.js'></script>";

        //$usuario = new USUARIO($userInfo->user_name);
        // echo $usuario->grupo_id;

        global $titleColor;
        global $blankColor;
        global $grayColor;


        global $_img_delete;
        global $_img_edit;

        $elimina_image = $_img_delete;
        $edita_image = $_img_edit;

        # Titulo
        echo "<h2>Listas Blancas Actuales</h2>";

        //Se traen todas las listaBlanca
        //$listaBlanca = new LISTABLANCA();
        //$listaBlanca->get_all();
        //$rowset=$listaBlanca->elementos
        $listaBlanca = new ListaBlancaModel();
        $select = $listaBlanca->select();
        $rowset = $listaBlanca->fetchAll($listaBlanca->select());

        //echo "<pre>"; print_r($listaBlanca);

        if($rowset->count() > 0)
        {
            $form = new HTML_Form('','post','myform','ifrm_process');
            echo $form->returnStart()."\n";

            #--- Parametros generales para las tablas usuarios y campaanas
            $tableUsuCamp = array('border' => "0",
                           'cellspacing' => "0",
                           'align' => "center",
                           'class' => "borde3",
                           'width' => "75%");

            $titleStyle = array('align' => "left", 'bgcolor' => $titleColor);
            $blankStyle = array('align' => "left", 'bgcolor' => $blankColor);
            $rowStyle   = array('align' => "left", 'bgcolor' => $grayColor);
            #---


            $table = new HTML_Table($tableUsuCamp);

            $row = array(
                 "<label class=SUBT>Promocion</label>",
                 "<label class=SUBT>Inicio inscripcion</label>",
                 "<label class=SUBT>Fin inscripcion</label>",
                 "<label class=SUBT>Inicio consumo</label>",
                 "<label class=SUBT>Fin consumo</label>",
         "<label class=SUBT>Clientes</label>"
         );
         $table->addRow($row,$titleStyle);

         $fila = 0;
         $table->updateCellAttributes($fila,0,array('width' => "5%"));
         $table->updateCellAttributes($fila,1,array('width' => "5%"));
         $table->updateCellAttributes($fila,2,array('width' => "5%"));
         $table->updateCellAttributes($fila,3,array('width' => "5%"));
         $table->updateCellAttributes($fila,4,array('width' => "5%"));
         $table->updateCellAttributes($fila,5,array('width' => "5%"));

         foreach ($rowset as $key => $value)
         {

             $row = array(
                     "<label class=textoAzul>{$value->id_promo}</label>",   
                     "<label class=textoAzul>{$value->inicio_inscripcion}</label>",
                     "<label class=textoAzul>{$value->fin_inscripcion}</label>",
                     "<label class=textoAzul>{$value->fin_inscripcion}</label>",
                     "<label class=textoAzul>{$value->fin_consumo}</label>",
                     "<label class=textoAzul>{$value->total}</label>"
             );
             $fila++;

             if ($fila == 0 || ($fila%2) == 0)
             $table->addRow($row,$rowStyle);
             else
             $table->addRow($row,$blankStyle);
         }

         $table->display();
         echo $form->returnEnd()."\n";
        }
        else
        echo "<br><br><br><br><br><br><p class=SUBT align=center>No existen informacion</p>";
    }


    public function crearAction()
    {
        if (!$this->_acl->isUserAllowed($this->_page."/crear")) exit("<p>Acceso denegado a $this->_page/crear</p>");
        include_once ROOT_DIR."/libs/funciones.php";
        echo "<script src='".BASE_URL."/js/funciones.js'></script>";
        
            $titleColor="";
            $blankColor="";
            $grayColor="";
        
            global $acciones_arr;
            global $upload_path;
        
        
        
            #echo "<pre>";print_r($_REQUEST);
        
        //     $campana = new CAMPANA($_REQUEST["id_campana"]);
        
            # Titulo
        //     echo "<p class=SUBT align='center'>Campa&ntilde;a {$campana->nombre}</p>";
            echo "<h2>Crear Lista Blanca</h2>";
        
        
            #echo "<br>";
            $form = new HTML_Form(BASE_URL.'/lista-blanca/index/bl-crear','post','myform','ifrm_process');
            echo $form->returnStart()."\n";
        
        $tableAttrs = array('border' => "0",
                            'cellspacing' => "0",
                            'align' => "center",
                            'class' => "borde");
        $table = new HTML_Table($tableAttrs);
        $titleStyle = array('colspan' => "5", 'bgcolor' => $titleColor);
        $blankStyle = array('colspan' => "5", 'bgcolor' => $blankColor);
        $rowStyle = array('align' => "left", 'bgcolor' => $blankColor);
        
        $fila = 0;
        
        //Promocion
        $row = array("",
                     "<p CLASS=textoAzul>Id Promocion&nbsp;</p>",
                     $form->returnText("id_promo",'SMSW',15,15,"dojoType=\"dijit.form.ValidationTextBox\" readonly")
                     ."<label CLASS=textoAzul></label>",
                     "");
        $table->addRow($row,$rowStyle);
        $fila++;
        
        
        $row = array("",
                     "<p CLASS=textoAzul>Inicio Inscripcion&nbsp;</p>",
                     $form->returnText("ini_inscripcion",@$_REQUEST["ini_inscripcion"],15,15,"class='InputTexto' dojoType=\"dijit.form.DateTextBox\"")
                     ."<label CLASS=textoAzul>&nbsp;</label>");
        $table->addRow($row,$rowStyle);
        $fila++;
        // $table->updateCellAttributes($fila, 1, array('align' => "right"));
        
        
        $row = array("",
                     "<p CLASS=textoAzul>Fin Inscripcion&nbsp;</p>",
                     $form->returnText("fin_inscripcion",@$_REQUEST["fin_inscripcion"],15,15,"class='InputTexto' dojoType=\"dijit.form.DateTextBox\"")
                     ."<label CLASS=textoAzul>&nbsp;</label>");
        $table->addRow($row,$rowStyle);
        $fila++;
        // $table->updateCellAttributes($fila, 1, array('align' => "right"));
        
        #--- Fecha Inicio Consumo
        
        $row = array("",
                     "<p CLASS=textoAzul>Inicio Consumo&nbsp;</p>",
                     $form->returnText("ini_consumo",@$_REQUEST["ini_consumo"],15,15,"class='InputTexto' dojoType=\"dijit.form.DateTextBox\"")
                     ."<label CLASS=textoAzul>&nbsp;</label>");
        $table->addRow($row,$rowStyle);
        $fila++;
        // $table->updateCellAttributes($fila, 1, array('align' => "right"));
        
        
        
        $row = array("",
                     "<p CLASS=textoAzul>Fin Consumo&nbsp;</p>",
                     $form->returnText("fin_consumo",@$_REQUEST["fin_consumo"],15,15,"class='InputTexto' dojoType=\"dijit.form.DateTextBox\"")
                     ."<label CLASS=textoAzul>&nbsp;</label>");
        $table->addRow($row,$rowStyle);
        $fila++;
        // $table->updateCellAttributes($fila, 1, array('align' => "right"));
        
        $table->display();
        
        echo "<br>";
        
            #--- Parametros Archivos
            $tableMaquinas = array('border' => "0",
                                   'cellspacing' => "0",
                                   'align' => "center",
                                   'class' => "borde3",
                                   'width' => "50%");
        
            $headerStyle = array('align' => "left");
            $titleStyle = array('align' => "left");
            $blankStyle = array('align' => "left");
            $rowStyle = array('align' => "left");
            #---
        
        
            $table = new HTML_Table($tableMaquinas);
            
            $row = array("<label class=SUBT>&nbsp;</label>",
                         "<label class=SUBT>Nombre</label>",
                         "<label class=SUBT>Tama&ntilde;o</label>",
                         "<label class=SUBT>Fecha</label>");
            $table->addRow($row,$titleStyle);
        
            $fila = 0;
            $i = 0;
        
            $archivos_arr = dir_list($upload_path);
            
        
            if ($archivos_arr) 
            {
                foreach ($archivos_arr as $key => $value) 
            {
                $check = $form->returnCheckbox("checkbox_file".$i, false, 1, @$_REQUEST["checkbox_file"], "id='checkbox_file.$i'");
                echo $form->returnHidden("filename".$i, $value["name"]);
        
                    $row = array("<label class=textoAzul>$check</label>",
                                 "<label class=textoAzul>{$value["name"]}</label>",
                                 "<label class=textoAzul align=right>{$value["size"]} bytes</label>",
                                 "<label class=textoAzul>{$value["time"]}</label>");
                    $fila++;
                $i++;
        
                    if ($fila == 0 || ($fila%2) == 0)
                        $table->addRow($row,$rowStyle);
                    else
                        $table->addRow($row,$blankStyle);
        
        
                }
            }
        
            #--- Mensaje
            $row = array("");
            $table->addRow($row,$blankStyle);
            $fila++;
        
        
            if (count($archivos_arr) > 1)
                $total_archivos = count($archivos_arr)." archivos";
            else
                $total_archivos = count($archivos_arr)." archivo";
        
            echo $form->returnHidden("countArchivos", count($archivos_arr));
        
            $row = array("",
                         "<label class=textoAzul><b>$total_archivos</b></label>");
            $table->addRow($row,$blankStyle);
            $fila++;
        
            $table->updateCellAttributes($fila,1,array('align' => "left", 'colspan' => "3"));
        
            $aceptar = $form->returnSubmit("Aceptar","aceptar","class='boton2' onClick='return ValidaInfoListaBlanca();'");
            $cancelar = $form->returnSubmit("Cancelar","cancelar","class='boton2' onClick='return Cancelar(\"../pl_listaBlanca/crear.php\");'");
            $row = array("",
                     "",
                     $aceptar."&nbsp;".$cancelar,
                     "");
        
        $table->addRow($row,array('align' => "center"));
        $fila++;
        
            $table->display();
        
            echo $form->returnEnd()."\n";
    }
        
    
    public function blCrearAction()
    {
        if (!$this->_acl->isUserAllowed($this->_page."/crear", "ADD")) exit("<script>alert('Acceso denegado a $this->_page/crear, ADD')</script>");
        set_time_limit(0);
        ini_set("memory_limit", "1024M");
        //echo "<pre>".print_r($_REQUEST, true). "</pre>";
        
        $id_promo = $_REQUEST['id_promo'];
        $ini_inscripcion = $_REQUEST['ini_inscripcion'];
        $fin_inscripcion = $_REQUEST['fin_inscripcion'];
        $ini_consumo = $_REQUEST['ini_consumo'];
        $fin_consumo = $_REQUEST['fin_consumo'];
        
        define("CLIENTES_MAX_LARGO_NUMERO", 11);
        global $upload_path;
        global $dsn_an;
        
        $seleccion = false;
        $numeros=array();
        
        
            
            $count = 0;
                for($i=0; $i< $_REQUEST["countArchivos"]; $i++)
            {
                        if(isset($_REQUEST["checkbox_file$i"]) && strcmp($_REQUEST["checkbox_file$i"],"on")==0 )
                {
        //          $seleccion = true;
                    $count++;
                }
            }
            
            if( $count==0 )
            {
                echo "<script  type='text/javascript'>
                alert('Debes seleccionar un archivo');
                //window.parent.cargarPanelCentral('../pl_listaBlanca/crear.php');"
                ." </script>";
                exit;
            }
            if( $count > 1 )
            {
                echo "<script  type='text/javascript'>
                alert('Debes seleccionar solo un archivo'); "
                ." </script>";
                exit;
            }
            
        //  if( $seleccion )
        //  {
        
        //  }
        //  else
        //  {
        //             echo "<script  type='text/javascript'>
        //             alert('Debes seleccionar un archivo');
        //             window.location = '../pl_listaBlanca/crear.php';"
        //             ." </script>";
        //  }
        
                for($i=0; $i< $_REQUEST["countArchivos"]; $i++)
            {
                        if(isset($_REQUEST["checkbox_file$i"]) && strcmp($_REQUEST["checkbox_file$i"],"on")==0 )
                {
                                $archivo = $upload_path."/".$_REQUEST["filename$i"];
                    
                                $ret = $this->procesaArchivo($archivo);
        
                                if( $ret!==false ){
        
                                        $numeros = array_merge($numeros, $ret);
                                }
                                else {
                                        echo "<script  type='text/javascript'>
                            alert('Ocurrio un error al procesar el archivo');
                                    //window.location = '../pl_listaBlanca/crear.php';"
                                    ." </script>";
                        exit;
                                }
                                
                    /*            
                    $listaBlanca = new LISTABLANCA( 
                        $id_promo,
                        $_REQUEST["filename$i"],
                        count($numeros),
                        $ini_inscripcion,
                        $fin_inscripcion,
                        $ini_consumo,
                        $fin_consumo
                        );
                    */
                    $listaBlanca = new ListaBlancaModel();
                    $selectIdLista = $listaBlanca->selectIdLista($id_promo, $ini_inscripcion);
         
                    $result = $listaBlanca->fetchAll($selectIdLista);   
        
                    Debug::write($result->count());
                    
                    if($result->count() == 0)
                    {
                        if ($listaBlanca->insert(array(
                            "id_promo"=>$id_promo, 
                            "archivo"=>$_REQUEST["filename$i"],
                            "numero_clientes"=>count($numeros),
                            "inicio_inscripcion" => $ini_inscripcion,
                            "fin_inscripcion" => $fin_inscripcion,
                            "inicio_consumo" => $ini_consumo,
                            "fin_consumo" => $fin_consumo
                        )))
                        {
                            # Obtener id_lista ... esto lo mismo que last_insert_id?
                            $select = $listaBlanca->select();
                            $select->where($listaBlanca->getAdapter()->quoteInto("id_promo", $id_promo));
                            $select->where($listaBlanca->getAdapter()->quoteInto("inicio_inscripcion", $ini_inscripcion));
                            $rows = $listaBlanca->fetchAll($select);
                            if ($rows->count() > 0) {
                                $id_lista = $rows[0]['id_lista'];
                            }
                            
                        }
                    }
                    else
                    {
                        echo "<script  type='text/javascript'>
                        alert('Lista blanca ya existe');
                        </script>";
                        exit();
                    }
        //          $query = "INSERT INTO clientes_lista_blanca (id_lista, msisdn)  VALUES ";
        // 
        // 
        //          foreach ($numeros as $value)
        //          {
        // //       echo $value;
        // //                   $query = $query ."($id_lista, $value) ,";
        //                  $listaBlanca->insert_cliente($id_lista, $value);
        //          }
        //          $query = substr($query, 0, -1);
        //          echo $query;
        //          $listaBlanca->insert_cliente_2($query);
                    
                        }
                 }
            //Llamar al proceso que carga los registros en la BD
            exec("ssh notav@localhost /home/notav/promociones/bin/subeArchivo /home/notav/promociones/");   
        
            echo "<script  type='text/javascript'>
                alert('Lista blanca creada con exito');
                window.parent.cargarPanelCentral('lista-blanca/index/crear');"
                ." </script>";
        
        
        //         if( $seleccion == 0)
        //         {
        //             echo "<script  type='text/javascript'>
        //             alert('Debes seleccionar un archivo');
        //             window.location = '../pl_listaBlanca/crear.php';"
        //             ." </script>";
        //         }
        
        //  if( !$listaBlanca->existe_listaBlanca() )
        //  {
                //Insertar Lista Blanca
        //      if ($listaBlanca->insert_into_db())
        //      {
        //      
        //          # Obtener id_lista
        //          $id_lista = $listaBlanca->get_id();
                
                    //Insertar Clientes
        //          foreach ($numeros as $value)
        //          {
        // //               echo "numero:[".$value."]\n";
        //              $listaBlanca->insert_cliente($id_lista, $value);
        //          }
                
                
        //          echo "<script  type='text/javascript'>
        //          alert('Lista blanca creada con exito');
        //          window.location = '../pl_listaBlanca/crear.php';"
        //          ." </script>";
        //      }
        //  }
        
        //  }
    }

    function procesaArchivo($archivo)
    {
    
        $numeros=array();

        $gestor = @fopen($archivo, "r");

        if ($gestor) {
                while (!feof($gestor)) 
                {
                        $bufer = trim(fgets($gestor, 15));

                         if( preg_match('/^[0-9]{'.CLIENTES_MAX_LARGO_NUMERO.'}$/', $bufer) == 1)
                                $numeros[$bufer]=$bufer;
                }

                fclose ($gestor);
        }
        else
                return false;

        return $numeros;
    }    
    
}







